【K8s】什么是Docker和K8S(Kubernetes) |
您所在的位置:网站首页 › 什么是k8s docker › 【K8s】什么是Docker和K8S(Kubernetes) |
目录 前言 一、Docker是什么? 二、虚拟机 (Virtual Machine) 三、容器(Container) 五、Docker能帮开发者做什么? 六、Docker 的缺点? 七、写在最后 前言 云原生架构离不开微服务,容器,Kubernetes (谐音:k8s )等技术的支撑,当下很火的容器 Docker 到底是什么,它又能为开发者带来哪些便利呢? 一、Docker是什么?口号:一次创建或配置,可以在任意地方正常运行 Docker是一个开源软件,也是一个开放平台,它用于开发应用、交付应用、运行应用。 Docker允许用户将基础设施中的应用单独分割出来,形成更小的部分容器,从而提高软件交付速度。 二、虚拟机 (Virtual Machine)虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,在实体计算机中能够完成的工作在虚拟机中都能够实现。 在计算机创建虚拟机时,会将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存,每个虚拟机都有独立的硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。 虚拟机会消耗大量系统资源和开销,尤其是当多个虚拟机在同一物理服务器上运行时,每个虚拟机都有自己的子操作系统,大量精力以及资源被用于虚拟化的部署和运行上。 三、容器(Container)容器类似于虚拟机,只是容器不是完整的操作系统,容器通常只包含必要的操作系统包和应用程序。它们通常不包含完整的操作系统或硬件虚拟化,这就是它们“轻量级”的原因。 Docker 可以尽可能轻松地创建和使用容器。 四、容器 VS 虚拟机 相比之下,每个容器均共享同一主机操作系统或系统内核,非常轻巧,通常只有数 MB ,这意味着容器可能只需几秒钟即可启动,而虚拟机则需要数 GB 和数分种。 特性容器虚拟机隔离级别进程级别操作系统级别系统资源0~5%5~15%镜像大小kb~MBGB~TB启动时间秒级分钟级集群规模上万上百高可用策略弹性,负载,动态备份,容灾,迁移 五、Docker能帮开发者做什么?为什么要使用Docker,它能为开发者带来哪些便利呢? 5.1 更高效的利用系统资源 Docker对系统资源的利用率更高,因为容器不用硬件虚拟以及运行完整操作系统等额外开销,无论是应用执行速度、内存损耗或者文件的存储速度,都要比传统虚拟机技术更高效,因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。 5.2 更快的启动时间 传统的虚拟机技术启动应用服务往往是分钟级别的,而Docker由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间,大大的节约了开发、测试、部署的时间。 5.3 更轻松迁移 Docker确保了执行环境的一致性,使得应用的迁移更加容易,Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户不用担心运行环境的变化导致应用无法正常运行的情况。 5.4 一致的运行环境 开发过程中常见的问题是环境一致性问题,由于开发测试生产环境不一致,导致有些bug没能在开发过程中被发现,而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 代码在我机器上能跑,这不怪我啊 这类问题。 5.5 持续交付和部署 对开发和运维(DevOps)来说,最希望的就是一次创建或配置,可以在任意地方正常运行,使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。 …… 六、Docker 的缺点?Docker本身非常适合用于管理单个容器。但随着您开始使用越来越多的容器和容器化应用,并把它们划分成数百个部分,很可能会导致管理和编排变得非常困难。 你需要对容器实施分组,以便跨所有容器提供网络、安全等服务,于是 Kubernetes (谐音:K8s)应运而生。 七、写在最后开发者,读到这里,相信你对Docker有了清晰的认识,接下来就是深入学习这门技术了,别忘了三连支持博主呀~ 我是小周,期待你的关注~👋 ———————————————— 版权声明:本文为CSDN博主「王子周棋洛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请 原文链接:https://blog.csdn.net/m0_53321320/article/details/125711841 原文:Docker和容器技术为什么会这么火爆?说白了,就是因为它“轻”。 在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。 相信很多人都用过虚拟机。虚拟机,就是在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。 虚拟机,类似于“子电脑” 在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。 虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。 虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare)。 而容器技术恰好没有这些缺点。它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。 沙箱 它启动时间很快,几秒钟就能完成。而且,它对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外,它占的空间很小,虚拟机一般要几GB到几十GB的空间,而容器只需要MB级甚至KB级。 容器和虚拟机的对比 正因为如此,容器技术受到了热烈的欢迎和追捧,发展迅速。 我们具体来看看Docker。 大家需要注意,Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。 想要搞懂Docker,其实看它的两句口号就行。 第一句,是“Build, Ship and Run”。 也就是,“搭建、发送、运行”,三板斧。 举个例子: 我来到一片空地,想建个房子,于是我搬石头、砍木头、画图纸,一顿操作,终于把这个房子盖好了。 结果,我住了一段时间,想搬到另一片空地去。这时候,按以往的办法,我只能再次搬石头、砍木头、画图纸、盖房子。 但是,跑来一个老巫婆,教会我一种魔法。 这种魔法,可以把我盖好的房子复制一份,做成“镜像”,放在我的背包里。 等我到了另一片空地,就用这个“镜像”,复制一套房子,摆在那边,拎包入住。 怎么样?是不是很神奇? 所以,Docker的第二句口号就是:“Build once,Run anywhere(搭建一次,到处能用)”。 Docker技术的三大核心概念,分别是: 镜像(Image)容器(Container)仓库(Repository)我刚才例子里面,那个放在包里的“镜像”,就是Docker镜像。而我的背包,就是Docker仓库。我在空地上,用魔法造好的房子,就是一个Docker容器。 说白了,这个Docker镜像,是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 也就是说,每次变出房子,房子是一样的,但生活用品之类的,都是不管的。谁住谁负责添置。 每一个镜像可以变出一种房子。那么,我可以有多个镜像呀! 也就是说,我盖了一个欧式别墅,生成了镜像。另一个哥们可能盖了一个中国四合院,也生成了镜像。还有哥们,盖了一个非洲茅草屋,也生成了镜像。。。 这么一来,我们可以交换镜像,你用我的,我用你的,岂不是很爽? 于是乎,就变成了一个大的公共仓库。 负责对Docker镜像进行管理的,是Docker Registry服务(类似仓库管理员)。 不是任何人建的任何镜像都是合法的。万一有人盖了一个有问题的房子呢? 所以,Docker Registry服务对镜像的管理是非常严格的。 最常使用的Registry公开服务,是官方的Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。 好了,说完了Docker,我们再把目光转向K8S。 就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。 就在这个时候,K8S出现了。 K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。 Kubernetes 这个单词来自于希腊语,含义是舵手或领航员。K8S是它的缩写,用“8”字替代了“ubernete”这8个字符。 和Docker不同,K8S的创造者,是众人皆知的行业巨头——Google。 然而,K8S并不是一件全新的发明。它的前身,是Google自己捣鼓了十多年的Borg系统。 K8S是2014年6月由Google公司正式公布出来并宣布开源的。 同年7月,微软、Red Hat、IBM、Docker、CoreOS、 Mesosphere和Saltstack 等公司,相继加入K8S。 之后的一年内,VMware、HP、Intel等公司,也陆续加入。 2015年7月,Google正式加入OpenStack基金会。与此同时,Kuberentes v1.0正式发布。 目前,kubernetes的版本已经发展到V1.13。 K8S的架构,略微有一点复杂,我们简单来看一下。 一个K8S系统,通常称为一个K8S集群(Cluster)。 这个集群主要包括两个部分: 一个Master节点(主节点)一群Node节点(计算节点)一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。 深入来看这两种节点。 首先是Master节点。 Master节点包括API Server、Scheduler、Controller manager、etcd。 API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。 Scheduler负责对集群内部的资源进行调度,相当于“调度室”。 Controller manager负责管理控制器,相当于“大总管”。 然后是Node节点。 Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。 Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。这段不太好理解,跳过吧。 Docker,不用说了,创建容器的。 Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。 Kube-proxy,主要负责为Pod对象提供代理。 Fluentd,主要负责日志收集、存储与查询。 是不是有点懵?唉,三言两语真的很难讲清楚,继续跳过吧。 Docker和K8S都介绍完了,然而文章并没有结束。 =========================================================== 接下来的部分,是给核心网工程师甚至所有通信工程师看的。 从几十年前的1G,到现在的4G,再到将来的5G,移动通信发生了翻天覆地的变化,核心网亦是如此。 但是,如果你仔细洞察这些变化,会发现,所谓的核心网,其实本质上并没有发生改变,无非就是很多的服务器而已。不同的核心网网元,就是不同的服务器,不同的计算节点。 变化的,是这些“服务器”的形态和接口:形态,从机柜单板,变成机柜刀片,从机柜刀片,变成X86通用刀片服务器;接口,从中继线缆,变成网线,从网线,变成光纤。 就算变来变去,还是服务器,是计算节点,是CPU。 既然是服务器,那么就势必会和IT云计算一样,走上虚拟化的道路。毕竟,虚拟化有太多的优势,例如前文所说的低成本、高利用率、充分灵活、动态调度,等等。 前几年,大家以为虚拟机是核心网的终极形态。目前看来,更有可能是容器化。这几年经常说的NFV(网元功能虚拟化),也有可能改口为NFC(网元功能容器化)。 以VoLTE为例,如果按以前2G/3G的方式,那需要大量的专用设备,分别充当EPC和IMS的不同网元。 VoLTE相关的网元 而采用容器之后,很可能只需要一台服务器,创建十几个容器,用不同的容器,来分别运行不同网元的服务程序。 这些容器,随时可以创建,也可以随时销毁。还能够在不停机的情况下,随意变大,随意变小,随意变强,随意变弱,在性能和功耗之间动态平衡。 简直完美! 5G时代,核心网采用微服务架构,也是和容器完美搭配——单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。 精细化分工 按照这样的发展趋势,在移动通信系统中,除了天线,剩下的部分都有可能虚拟化。核心网是第一个,但不是最后一个。虚拟化之后的核心网,与其说属于通信,实际上更应该归为IT。核心网的功能,只是容器中普通一个软件功能而已。 至于说在座的各位核心网工程师,恭喜你们,马上就要成功转型啦! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |